package backend.project.gym_management.controller;

import io.github.pigmesh.ai.deepseek.core.DeepSeekClient;
import io.github.pigmesh.ai.deepseek.core.chat.ChatCompletionResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;

import java.util.Map;

@Slf4j
@RestController
public class DeepSeekChatController {
    // 自动注入 DeepSeekClient 实例，用于调用 DeepSeek API
    @Autowired
    private DeepSeekClient deepSeekClient;

    /**
     * 定义一个 HTTP GET 接口，路径为 "/chat"
     * 该接口返回 Server-Sent Events (SSE) 流式响应
     *
     * @param prompt 用户输入的对话提示词（通过请求参数传递）
     * @return 返回一个 Flux 流，包含连续的 AI 响应片段（流式输出）
     */
    /**
     * 同步接口：接收 prompt，返回完整的 ChatCompletionResponse
     */
    @PostMapping(path = "/chat", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
    public Flux<ChatCompletionResponse> chat(@RequestBody Map<String, String> request) {
        try {
            return deepSeekClient.chatFluxCompletion(request.get("prompt"));
        } catch (Exception e) {
            // 记录详细的错误信息
            log.error("DeepSeek API 调用失败: {}", e.getMessage(), e);
            // 返回空 Flux 或自定义错误响应
            return Flux.empty();

        }
    }
}